package cn.edu.cug.cs.gtl.docsrv.txt.dao;

import cn.edu.cug.cs.gtl.mybatis.mapper.txt.TxtAll;
import cn.edu.cug.cs.gtl.mybatis.mapper.txt.TxtCatalog;
import cn.edu.cug.cs.gtl.mybatis.mapper.txt.TxtAll;
import cn.edu.cug.cs.gtl.mybatis.mapper.txt.TxtCatalog;
import cn.edu.cug.cs.gtl.protos.Document;
import org.locationtech.jts.geom.Envelope;
import org.locationtech.jts.geom.Geometry;

import java.math.BigDecimal;
import java.util.List;

public interface TxtDao {
    void addTxt(TxtAll txtAll);

    void addTxts(List<TxtAll> txtAllList);

    @Deprecated
    boolean addFromRawDB();

    List<TxtAll> getTxtByName(String txtName);

    List<TxtAll> getTxtByEnTitle(String txtEnTitle);

    TxtAll getTxtByInternalId(BigDecimal internalId);

    /**
     服务编号：7009
     服务名称：deleteTxtByInternalId
     功能描述：删除图形数据库中指定ID的图形
     接口描述： /api/txt/deleteTxtByInternalId
     传入参数：
     long internalId；
     返回值：
     成功返回true , 否则返回false
     调用示例：
     */
    boolean deleteTxtByInternalId(BigDecimal internalId);

    /**
     服务编号：7014
     服务名称：getTxtCatalogs
     功能描述：图形数据库中提取所有分类
     接口描述： /api/txt/getTxtCatalogs
     传入参数：
     返回值：
     List<TxtCatalog> catalogs
     调用示例：
     */
    List<TxtCatalog> getTxtCatalogs();

    /**
     服务编号：7016
     服务名称：getDocumentByTxtInternalId
     功能描述：图形数据库中提取指定Txt文档
     接口描述： /api/txt/getDocumentByTxtInternalId
     传入参数：
     long txtInternalId
     返回值：
     Document doc;
     其中，每个Feature的GeoJSON字符串为Document的一个content；
     其他的不为空的字段为该Txt文档的元数据。
     调用示例：
     http://localhost:8090/api/txt/getDocumentByTxtInternalId?txtInternalId=3
     */
    Document getDocumentByTxtInternalId(BigDecimal txtInternalId);


    List<TxtAll> getTxtByCatalogInternalId(BigDecimal catalogInternalId);


    /**
     * 将所有的目录整理成一个树后返回
     * @return
     */
//    CatalogTree getCatalogTree();

    List<BigDecimal> getTxtInternalIdsByCatalogInternalId(BigDecimal catalogId);

    List<TxtAll> getTxtByCnTitle(String txtCnTitle);
}
